package com.hhf.rpc.core.model;

import cn.hutool.core.util.StrUtil;
import com.hhf.rpc.core.constant.RpcConstant;
import lombok.Data;

/**
 * @Author hhf
 * @Date 2024/10/17
 * @Description
 */
@Data
public class ServiceMetaInfo {

    /**
     * 服务名
     */
    private String serviceName;

    /**
     * 服务版本号
     */
    private String serviceVersion = RpcConstant.DEFAULT_SERVICE_VERSION;

    /**
     * 服务地址
     */
    private String serviceHost;

    /**
     * 服务端口
     */
    private Integer servicePort;

    /**
     * 服务分组
     */
    private String serviceGroup = RpcConstant.DEFAULT_SERVICE_GROUP;

    /**
     * 获取服务键名
     */
    public String getServiceKey(){
        return String.format("%s:%s",serviceName,serviceVersion);
    }

    /**
     * 获取服务结点名
     * @return
     */
    public String getServiceNodeKey(){
        return String.format("%s/%s:%s",getServiceKey(),serviceHost,servicePort);
    }

    /**
     * 获取服务调用地址
     */
    public String getServiceAddress(){
        String httpStr = "http://";
        if (!StrUtil.contains(serviceHost,httpStr)){
            return String.format("%s%s:%s",httpStr,serviceHost,servicePort);
        }
        return String.format("%s:%s",serviceHost,servicePort);
    }

}
